js 关于 replace 取值、替换第几个匹配项 | 您所在的位置:网站首页 › jq replace 全部替换 › js 关于 replace 取值、替换第几个匹配项 |
在日常开发中,经常遇到针对字符串的替换、截取,知识点比较碎容易混淆,特此总结一下,仅供参考。
〇、前言
在日常开发中,经常遇到针对字符串的替换、截取,知识点比较碎容易混淆,特此总结一下,仅供参考。 一、替换第一个匹配项 字符串替换 let strtest = "0123测试replace456测试replace789测试replace0" console.log("原字符串:" + strtest) let outstr = strtest.replace("测试","ceshi") console.log("输出字符串:" + outstr) // 原字符串:0123测试replace456测试replace789测试replace0 // 输出字符串:0123ceshireplace456测试replace789测试replace0 正则表达式替换当直接在被替换字符串恰后加上 / 时,不添加修饰符,就等同于直接字符串替换。 let strtest = "0123测试replace456测试replace789测试replace0" console.log("原字符串:" + strtest) let outstr = strtest.replace(/测试/, "ceshi") console.log("输出字符串:" + outstr) // 原字符串:0123测试replace456测试replace789测试replace0 // 输出字符串:0123ceshireplace456测试replace789测试replace0 二、替换全部匹配项 字符串分组再联合 let strtest = '0123测试replace456测试replace789测试replace0'; console.log("原字符串:" + strtest) let arrstr = strtest.split("测试"); let outstr = arrstr.join("ceshi"); console.log("输出字符串:" + outstr) // 原字符串:0123测试replace456测试replace789测试replace0 // 输出字符串:0123ceshireplace456ceshireplace789ceshireplace0 正则表达式替换格式:/待替换的字符串/g、/待替换的字符串/mgi。 g:执行全局匹配,替换全部匹配项; i:不区分大小写; m:多行匹配。 gim 可所以组合使用。 let strtest = "0123测试replace456测试replace789测试replace0" console.log("原字符串:" + strtest) let outstr = strtest.replace(/测试/g, "ceshi") // 另一种写法: // let reg = new RegExp("测试", "g") // let outstr = strtest.replace(reg, "ceshi") console.log("输出字符串:" + outstr) // 原字符串:0123测试replace456测试replace789测试replace0 // 输出字符串:0123ceshireplace456ceshireplace789ceshireplace0 三、替换第 n 个匹配项下边以第二个为例。 字符串分组再联合思路:先通过被替换项分组,再根据目标位数把整个分组分为两个部分,在通过替换字符串联合。 let num = 2 // 定义替换第二个匹配项 let strtest = '0123测试replace456测试replace789测试replace0'; console.log("原字符串:" + strtest) let arrstr = strtest.split("测试"); if(arrstr.length < num) return let arrstr1=[],arrstr2=[] for(let ii=0;ii strtest.indexOf(endstr)) return console.log("原字符串:" + strtest) let arr = strtest.split(startstr) let arr2 = arr[1].split(endstr) let resultstr = arr2[0] let outstr = startstr + resultstr + endstr console.log("输出字符串:" + outstr) // 原字符串:0123replace456测试replace789测试replace0 // 输出字符串:replace456测试replace78 正则表达式方法 replace()、match()、exec()替换为指定字符串:( replace() ) let strtest = '0123replace456测试replace789测试replace0'; console.log("原字符串:" + strtest) let outstr = strtest.replace(/(.*?)/m, "-ceshi-") // \ 为转义字符 console.log("输出字符串:" + outstr) // 原字符串:0123replace456测试replace789测试replace0 // 输出字符串:0123-ceshi-9测试replace0取出带标记字符串的内容:( match() ) let strtest = '0123replace456测试replace789测试replace0'; console.log("原字符串:" + strtest) let outstr = strtest.match(/(.*?)/m) console.log("输出字符串:" + outstr) // 原字符串:0123replace456测试replace789测试replace0 // 输出字符串:replace456测试replace78当可能有多个匹配项时:( exec() ) let strtest = "这是要提取的内容,还有另一个内容" console.log("原字符串:" + strtest) let regex = /(.*?)/gm const matches = [] let match while ((match = regex.exec(strtest)) !== null) { matches.push(match[1]) console.log(match) } console.log("输出全部匹配项:", matches) // 原字符串:这是要提取的内容,还有另一个内容 // (2) ["要提取的内容", "要提取的内容", index: 2, input: "这是要提取的内容,还有另一个内容", groups: undefined] // (2) ["另一个内容", "另一个内容", index: 28, input: "这是要提取的内容,还有另一个内容", groups: undefined] // 输出全部匹配项: (2) ["要提取的内容", "另一个内容"]本文来自博客园,作者:橙子家,微信号:zfy1070491745,有任何疑问欢迎沟通,一起成长。 转载本文请注明原文链接:https://www.cnblogs.com/czzj/p/js_replace.html |
CopyRight 2018-2019 实验室设备网 版权所有 |